const db = require("../db")
const path = require("path")

// 实现 获取文章列表的逻辑 - 分页- 筛选条件- 不传表示所有
const querySql =
  "select *  from article where is_delete=0 and ? and ? limit ?,?" // 查分页数据
const queryCountSql =
  "select count(*) as count from article where is_delete=0 and ? and ?  " // 查总数

exports.getList = function (req, res) {
  const { pagenum, pagesize, cate_id, state } = req.query
  let cateWhere = "1=1" // 先定义一个恒等条件
  if (cate_id) {
    cateWhere = `cate_id=${Number(cate_id)}`
  }
  let stateWhere = "1=1"
  if (state) {
    stateWhere = `state=${Number(state)}`
  }
  const tempCountSql = `select count(*) as count from article where is_delete=0 and ${stateWhere} and ${cateWhere}  `
  //   console.log(cateWhere, stateWhere)
  db.query(tempCountSql, [cateWhere, stateWhere], function (err, result) {
    if (!err) {
      const [{ count }] = result
      // 表示查询到了数据
      // limit 索引, 长度

      // 当它为空的时候 不管它 当它不为空的时候 使用条件查询

      // 索引
      const startIndex = (pagenum - 1) * pagesize //  (页码 -1)* 每页长度
      const tempSql = `select *  from article where is_delete=0 and ${cateWhere} and ${stateWhere} limit ${startIndex},${Number(
        pagesize
      )}`
      //   console.log(tempSql)
      db.query(
        tempSql,
        // [stateWhere, cateWhere, startIndex, Number(pagesize)],
        function (error, data) {
          if (!error) {
            res.send({
              message: "获取文章列表数据成功",
              status: 0,
              total: count,
              data,
            })
          } else {
            res.send(error)
          }
        }
      )
    } else {
      res.sendError(err)
    }
  })
}

const deleteSql = "update article set is_delete=1 where Id=?"

exports.deleteArticle = function (req, res) {
  const { id } = req.params
  if (id) {
    db.query(deleteSql, id, function (err, result) {
      if (!err) {
        res.send({ message: "删除文章成功", status: 0 })
      } else {
        res.sendError(err)
      }
    })
  } else {
    res.sendError("没有id不能删除文章")
  }
}
const insertSql = "insert into article set ?" // ？ 代表一个对象-可以和数据库表对应
exports.addArticle = function (req, res) {
  console.log(req.body) // 打印文章数据
  console.log(req.file) // 打印文件数据
  const obj = {
    ...req.body,
    is_delete: 0, // 默认是0
    pub_date: new Date(), // 发布时间
    cover_img: path.join("/uploads", req.file.filename), // 存储的是一个路径 不是base64
    author_id: req.user.id, // 发布者的id 登录者 发布啦这篇文章 token => 中间件解析
  }
  db.query(insertSql, obj, function (err, result) {
    if (!err) {
      res.send({ message: "发布文章成功", status: 0 })
    } else {
      res.sendError(err)
    }
  })
  // 可以获取到 数据 -文章类的数据，-文章封面的地址
  // 就可以写入数据库- 新增
}
